package persistencia.base;

import persistencia.ClienteDAO;
import persistencia.ClienteDAOImpl;
import persistencia.FornecedorDAO;
import persistencia.FornecedorDAOImpl;
import persistencia.ItemDAO;
import persistencia.ItemDAOImpl;
import persistencia.NfCompraDAO;
import persistencia.NfCompraDAOImpl;
import persistencia.OrcamentoDAO;
import persistencia.OrcamentoDAOImpl;
import persistencia.PedidoDAO;
import persistencia.PedidoDAOImpl;
import persistencia.ProdutoDAO;
import persistencia.ProdutoDAOImpl;
import persistencia.UsuarioDAO;
import persistencia.UsuarioDAOImpl;

@SuppressWarnings("rawtypes")
public class DAOFactory {

	private static GenericDAOAbstract insantiateDAO(Class daoClass) {

		try {
			return (GenericDAOAbstract) daoClass.newInstance();

		} catch (Exception ex) {
			throw new RuntimeException("Nao conseguiu instanciar o DAO: "
					+ daoClass, ex);
		}
	}

	public static ClienteDAO getClienteDAO() {
		return (ClienteDAO) insantiateDAO(ClienteDAOImpl.class);
	}

	public static ProdutoDAO getProdutoDAO() {
		return (ProdutoDAO) insantiateDAO(ProdutoDAOImpl.class);
	}

	public static FornecedorDAO getFornecedorDAO() {
		return (FornecedorDAO) insantiateDAO(FornecedorDAOImpl.class);
	}
	
	public static UsuarioDAO getUsuarioDAO() {
		return (UsuarioDAO) insantiateDAO(UsuarioDAOImpl.class);
	}
	
	public static OrcamentoDAO getOrcamentoDAO(){
		return (OrcamentoDAO) insantiateDAO(OrcamentoDAOImpl.class); 
	}
	
	public static PedidoDAO getPeidodoDAO(){
		return (PedidoDAO) insantiateDAO(PedidoDAOImpl.class); 
	}
	
	public static NfCompraDAO getNfCompraDAO(){
		return (NfCompraDAO) insantiateDAO(NfCompraDAOImpl.class); 
	}
	
	public static ItemDAO getItemDAO(){
		return (ItemDAO) insantiateDAO(ItemDAOImpl.class);
	}

}
